iT邦幫忙

2023 iThome 鐵人賽

DAY 5
0
AI & Data

AI白話文運動系列之「A!給我那張Image!」系列 第 5

現代問題就要用現代方法來處理--AI中的線性代數(以MLP為例)

  • 分享至 

  • xImage
  •  

前言

前幾天著重在微積分(梯度下降法)與任務目標最佳化方法的討論,今天讓我們正式踏入AI模型的世界,看看一個簡單的AI模型會長甚麼樣子。

先備知識

  1. 高中線性代數(至少需要知道向量、矩陣計算等概念)

看完今天的內容你可能會知道......

  1. 甚麼是神經元?
  2. 多層感知器是甚麼結構?
  3. 人腦中的神經元與AI模型中的神經元差在哪裡?

一、線性代數入門

  • 國中的時候我們學過數線,它是一條有方向的線,這個方向是由線上任兩點決定的,到了高中,我們把這樣的概念延伸,認識了向量,它跟一般的點差在它除了「長度」以外,還需要具有「方向」,所以在圖上我們習慣用箭號來表示。向量與一般的點一樣可以做不同的運算,也可以「被」運算,也就是通過矩陣來改變向量。
  • 在數學上我們會用這樣的方式表示向量與矩陣的運算::https://chart.googleapis.com/chart?cht=tx&chl=%5Cmathbf%7By%7D%20%3D%20%5Cmathbf%7BA%7D%5Cmathbf%7Bx%7D ,其中 https://chart.googleapis.com/chart?cht=tx&chl=%5C(%5Cmathbf%7BA%7D%20%5Cin%20%5Cmathbb%7BR%7D%5E%7Bm%20%5Ctimes%20n%7D%5C)https://chart.googleapis.com/chart?cht=tx&chl=%5C(%5Cmathbf%7Bx%7D%20%5Cin%20%5Cmathbb%7BR%7D%5E%7Bn%7D%5C),以及https://chart.googleapis.com/chart?cht=tx&chl=%5C(%5Cmathbf%7By%7D%20%5Cin%20%5Cmathbb%7BR%7D%5E%7Bm%7D%5C),分別代表裡面有所元素都是實數的矩陣與向量。

二、AI模型的基本單位--神經元

  • 人體由許多各司其職的單位構成,讓你可以運動的是肌肉,負責思考下指令的是腦,可是,我今天要如何將腦部的訊號傳遞到所需要的部位呢?這就需要利用神經元來幫忙,下圖是一個神經元的構造
  • https://ithelp.ithome.com.tw/upload/images/20230920/20163299MydHNVyQ9e.png
  • 中間一長條的部分稱為軸突,用來傳遞訊號,而左邊的樹狀結構稱為樹突,負責接收訊號,最後,由最右方的樹狀結構:突觸,負責將訊號再往下傳遞。整個過程看似簡單,卻有一些地方值得深思,首先,這個訊號是甚麼東西?訊號一直來的話,神經元就會不斷地傳遞訊號嗎?
  • 先來說說第一個問題,所謂的「訊號」,其實也可以想成是某種「刺激」,這些刺激讓細胞的表面電位產生變化,因此就有了訊號,就像我們使用的電器一樣,當有0跟1(有或無)的差異出現時,就可以利用這差異產生一連串有意義的訊號。
  • 接著來看第二個問題,實際上,並不是所有傳遞到神經元的訊號都會往下傳,我們的神經元跟腦是非常聰明的,可塑性也非常高,從我們開始「學習」之後(從你出生之後無時無刻都在學習),每接觸一次新的資訊都是在重新塑造這些神經元,因此這些神經元會根據不同的訊號產生不同的反應,同時,神經元還會「累積」訊號,每個神經元都會判斷這次的訊號強度夠不夠,只有當訊號強度夠高的時候才會往下傳遞,不夠的話就先記起來,累積到強度夠高為止。
  • 對這部分感興趣的話可以參考:https://zh.wikipedia.org/zh-tw/%E7%A5%9E%E7%B6%93%E5%85%83 看完基本上可以更清楚神經元的運作方式。
  • 一開始探索人工智慧的時候,就像人類在其他領域常做的一樣,先找性能類似的東西,嘗試模仿與改造(飛機與鳥、潛水艇與魚等等),在AI這個領域,被模仿的就是上面介紹到的神經元,也就是下面所看到:
  • https://ithelp.ithome.com.tw/upload/images/20230920/20163299ChDsJIttpf.png
  • 藍色圓形表示一個神經元,左方的箭頭表示輸入訊號,右方箭頭表示輸出訊號,中間的運算符號分別代表:「累加」與「激發」,也就是前面提到的訊號的累積以及判斷該訊號是否往下傳遞。函數f也被稱為「激勵函數(Activation Function)」。
  • 如果用數學來描述這樣的過程就是:https://chart.googleapis.com/chart?cht=tx&chl=%5C%5B%20a%20%3D%20f%5Cleft(%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%20(w_i%20%5Ccdot%20x_i)%20%2B%20b%5Cright)%20%5C%5D ,其中https://chart.googleapis.com/chart?cht=tx&chl=%20%5C(x_i%5C) 表示輸入訊號,https://chart.googleapis.com/chart?cht=tx&chl=%5C(w_i%5C)) 表示對應訊號的強弱,https://chart.googleapis.com/chart?cht=tx&chl=%20%5C(b%5C)表示一個修正量(bias),修正量與訊號強弱其實也就是我們之前不斷在討論的「參數」,畢竟這是整個系統當中唯一可以由人為控制的部分,輸入訊號是給定好的,不能動,而輸出訊號又取決於輸入訊號與不同參數的運算結果,所以這也是為甚麼我們會花很多時間討論「參數」以及參數要怎麼更新(梯度下降法),可以說這就是整個AI模型的靈魂。
  • 順帶一提,如果覺得上面的數學形式很熟悉的話,恭喜你!這個表達式可以利用上面線性代數的方式表示成矩陣跟向量的運算!

三、最基礎的AI模型--多層感知器MLP

  • 就像人腦一樣,我們的AI模型也不會只有一個簡單的神經元,所以,最簡單的方式就是把這些神經元全部組合在一起,用來模擬人腦:
  • https://ithelp.ithome.com.tw/upload/images/20230920/20163299YqUEEOC4Sh.png
  • 這樣的結構我們稱之為多層感知器Multilayer Perceptron(MLP),他由好幾個不同的「層(Layer)」每個層裡面又包含了許多的神經元,線圖只是很簡單的範例,可以按照這個邏輯擴大成更大的模型。
  • 補充:在AI模型中,我們有時候會使用隱藏層(Hidden layer)來表示除了出入與輸出層以外的所有層,以上圖僅有的三層為例,其中最左邊的代表輸入層,最右邊的代表輸出層,中間的便是隱藏層。
  • 如果利用上面討論過的線性代數的概念,結合單個神經元的運算的話,我們可以把這樣一個模型的每個步驟寫成這樣:https://ithelp.ithome.com.tw/upload/images/20230920/20163299MsGQFdLQuq.png
  • 有了這樣表達式之後,我們可以嘗試利用梯度下降法推導看看每個參數要怎麼更新,具體的步驟會留到明天跟實作的部分一起解答。
  • 其實最開始出現的是單層感知器,也就是僅有一層的模型,不過那個可以看成是MLP的特例,所以我並沒有特別拿出來討論,對這些內容與歷史演進有興趣的可以參考:https://zh.wikipedia.org/zh-tw/%E4%BA%BA%E5%B7%A5%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C

四、總結

  • 在今天的內容中,我們算是正式進入AI模型的世界了,後面我們會接續這個步調往下討論一些常見的模型架構,也會看看不同的使用情境應該要用怎樣的模型架構,不同架構有甚麼優缺點等等的。如果可以的話,最好能利用今天的內容,結合先前討論過的梯度下降法複習一次,在看到明天的內容之前,可以先看看自己理解到哪裡了,這樣也有助於學習後續的內容。

上一篇
理想跟現實不一樣有甚麼損失?番外篇(客製化AI訓練目標--正則化器)
下一篇
番外篇—AI怎麼學?梯度下降法與反向傳播
系列文
AI白話文運動系列之「A!給我那張Image!」30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言